package com.kykj.kykj.service.impl;

import com.kykj.kykj.dao.RootDao;
import com.kykj.kykj.dao.UserDao;
import com.kykj.kykj.entity.UserEntity;
import com.kykj.kykj.service.UserService;
import com.kykj.kykj.vo.UserVo;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Resource//注入UserDao
    UserDao userDao;
    @Resource
    RootDao rootDao;

    /**
     * 获取用户列表（所有）
     * @return List
     */
    @Override
    public List<UserEntity> getUserList() {
        return userDao.getUserList();
    }

    /**
     * 添加用户
     * @param userVo 用户对象
     * @return int：影响的行数
     */
    @Override
    public int addUser(UserVo userVo) {
        if(userDao.addUser(userVo)>0){//用户添加成功
            if(userDao.addUserDetail(userVo.getUid())>0){//用户详情添加成功
                if(rootDao.addRoot(13,userVo.getUid())>0){//用户角色添加成功
                    return 1;
                }
            }
        }
        return 0;
    }

    /**
     * 更新用户
     * @param userVo 用户对象
     * @return int:影响的行数
     */
    @Override
    public int upUser(UserVo userVo) {
        return userDao.upUser(userVo);
    }

    /**
     * 删除用户
     * @param uid 用户id
     * @return int:影响的行数
     */
    @Override
    public int delUser(int uid) {
        if(userDao.delUser(uid)>0){//删除用户成功
            if(rootDao.delRootByUid(uid)>0){ //删除用户权限成功
                if(userDao.delUserDetail(uid)>0){//删除用户详情成功
                    return 1;
                }
            }
        }
        return 0;
    }

    /**
     * 获取用户分页
     * @param uname 用户名
     * @param start 起始位置
     * @param limit 每页条数
     * @return List
     */
    @Override
    public List<UserEntity> getUserByPage(String uname, int start, int limit) {
        if(!uname.equals("")){ //当用户名不是空的时候 就增加%
            uname="%"+uname+"%";
        }
        return userDao.getUserByPage(uname, start, limit);
    }

    /**
     * 获取所有用户数量
     * @return int
     */
    @Override
    public int getUserCount() {
        return userDao.getUserCount();
    }

    /**
     * 登录获取token
     * @param uname 用户名
     * @param upwd 密码
     * @return UserEntity
     */
    @Override
    public UserEntity doLogin(String uname, String upwd) {
        return userDao.doLogin(uname, upwd);
    }

    @Override
    public int upAvatar(String avatar, int uid) {
        return userDao.upAvatar(avatar, uid);
    }
}
